#include<bits/stdc++.h>
typedef struct Node{
	int data;
	struct Node *left;
	struct Node *right;
}NODE,*BST;
BST create(BST T,int x){
	if(!T){
		T=(BST)malloc(sizeof(NODE));
		T->data=x;
		T->left=NULL;
		T->right=NULL;
	}
	else if(x>T->data){
		T->right=create(T->right,x);
	}
	else if(x<T->data){
		T->left=create(T->left,x);
	}
	return T;
}
bool match(BST a,BST b){
	if(a==NULL&&b==NULL)
		return true;
	if((a==NULL&&b!=NULL)||(a!=NULL&&b==NULL))
		return false;
	if(a->data!=b->data)
		return false;
	if(a->data==b->data);
		return match(a->left,b->left)&&match(a->right,b->right);
	return false;
}
int main(){
	int n,l,x;
	while(scanf("%d",&n)&&n){
		BST T=NULL;
		scanf("%d",&l);
	for(int i=0;i<n;i++){
		scanf("%d",&x);
		T=create(T,x);
	}
	for(int i=0;i<l;i++){
		BST T1=NULL;
		for(int i=0;i<n;i++){
			scanf("%d",&x);
			T1=create(T1,x);
		}
		if(match(T,T1)){
			printf("yes\n");
		}
		else{
			printf("no\n");
		}
	}
}
	return 0;
}
